import { Question } from "../interface";

const questions: Question[] = [
    {
        question: "前端构建的核心目标不包括：",
        radios: [
            "转换新语法兼容旧浏览器",
            "减少HTTP请求数量",
            "直接连接生产数据库",
            "代码分片按需加载"
        ],
        desc: "构建工具不处理与后端数据库的直接连接"
    },
    {
        question: "下列哪些属于代码分割(Code Splitting)的常见策略？",
        radios: [
            "入口点分割(Entry Points)",
            "动态导入(Dynamic Imports)",
            "CSS预处理器分割",
            "去重分割(Dedupe Splitting)"
        ],
        muti: true,
        desc: "CSS预处理器不参与代码分割决策"
    },
    {
        question: "关于Tree Shaking的实现条件，错误的是：",
        radios: [
            "必须使用ES6模块语法",
            "需要配置sideEffects标记",
            "依赖静态代码分析",
            "适用于CommonJS模块"
        ],
        desc: "CommonJS的动态特性使其无法被Tree Shaking"
    },
    {
        question: "下列哪些资源应该被列为外部依赖(externals)？",
        radios: [
            "通过CDN引入的React",
            "项目自研的组件库",
            "体积较大的第三方图表库",
            "Node.js内置模块"
        ],
        muti: true,
        desc: "自研组件库应该参与构建而非外部化"
    },
    {
        question: "实现CSS作用域隔离的最佳方案是：",
        radios: [
            "BEM命名规范",
            "CSS Modules",
            "Scoped CSS",
            "Inline Styles"
        ],
        muti: true,
        desc: "所有选项都是有效的CSS隔离方案"
    },
    {
        question: "关于Source Map的作用，错误的是：",
        radios: [
            "映射转换后代码到源代码",
            "生产环境必须开启",
            "支持调试压缩后的代码",
            "会增加构建输出体积"
        ],
        desc: "生产环境通常使用精简版Source Map或不开启"
    },
    {
        question: "下列哪些属于构建性能优化手段？",
        radios: [
            "持久化缓存",
            "多进程并行构建",
            "限制loader作用范围",
            "预编译第三方库"
        ],
        muti: true,
        desc: "所有选项都是常见的构建性能优化方法"
    },
    {
        question: "关于模块热替换(HMR)的实现原理，正确的是：",
        radios: [
            "依赖WebSocket通信",
            "全量刷新页面",
            "保留应用状态",
            "需要运行时支持"
        ],
        muti: true,
        desc: "HMR的核心是局部更新而非全量刷新"
    },
    {
        question: "下列哪种情况会破坏构建确定性？",
        radios: [
            "使用绝对路径",
            "依赖未锁定的版本号",
            "包含时间戳的变量",
            "启用contenthash"
        ],
        muti: true,
        desc: "contenthash本身不会破坏确定性"
    },
    {
        question: "实现多环境配置的最佳实践是：",
        radios: [
            "环境变量注入",
            "单独配置文件",
            "构建脚本参数",
            "运行时动态加载"
        ],
        muti: true,
        desc: "所有选项都是可行的多环境适配方案"
    },
    {
        question: "关于静态资源哈希策略，错误的是：",
        radios: [
            "hash基于整个项目构建",
            "chunkhash基于入口文件",
            "contenthash基于文件内容",
            "fullhash基于模块依赖"
        ],
        desc: "chunkhash基于chunk内容而非入口文件"
    },
    {
        question: "下列哪些属于现代构建工具的共同特性？",
        radios: [
            "零配置启动",
            "内置开发服务器",
            "插件系统",
            "文件系统监听"
        ],
        muti: true,
        desc: "所有选项都是现代构建工具的标配能力"
    },
    {
        question: "关于DLL优化的适用场景，正确的是：",
        radios: [
            "频繁更新的业务代码",
            "长期稳定的第三方库",
            "小型项目",
            "多入口应用"
        ],
        desc: "DLL适合稳定且体积大的依赖库预构建"
    },
    {
        question: "实现CSS自动补全前缀的工具是：",
        radios: [
            "PostCSS",
            "Sass",
            "Less",
            "Stylus"
        ],
        desc: "PostCSS的autoprefixer插件是标准解决方案"
    },
    {
        question: "下列哪些操作应该放在CI/CD流水线中？",
        radios: [
            "依赖安装",
            "代码风格检查",
            "E2E测试",
            "依赖版本升级"
        ],
        muti: true,
        desc: "依赖版本升级应由开发人员主动控制"
    },
    {
        question: "关于Bundle Analyzer的作用，错误的是：",
        radios: [
            "可视化依赖体积",
            "优化构建速度",
            "检测重复依赖",
            "分析加载时序"
        ],
        desc: "不直接分析加载时序(需配合其他工具)"
    },
    {
        question: "下列哪些属于现代浏览器原生支持的模块方案？",
        radios: [
            "ES Modules",
            "CommonJS",
            "AMD",
            "UMD"
        ],
        desc: "只有ES Modules是浏览器原生支持的"
    },
    {
        question: "实现构建产物差异部署的关键是：",
        radios: [
            "文件名哈希策略",
            "CDN缓存刷新",
            "版本号管理",
            "灰度发布系统"
        ],
        muti: true,
        desc: "所有选项都是差异部署的必要条件"
    },
    {
        question: "关于Polyfill的使用原则，正确的是：",
        radios: [
            "按需引入特性",
            "基于browserslist配置",
            "全量引入确保兼容",
            "配合core-js使用"
        ],
        muti: true,
        desc: "全量引入会导致不必要的代码体积增加"
    },
    {
        question: "下列哪些属于Monorepo的优势？",
        radios: [
            "共享依赖管理",
            "原子化提交",
            "独立构建速度更快",
            "便于代码复用"
        ],
        muti: true,
        desc: "Monorepo的构建速度可能更慢(需优化)"
    },
    {
        question: "关于SSR构建的特殊处理，错误的是：",
        radios: [
            "需要区分客户端/服务端入口",
            "不能使用浏览器API",
            "CSS需要额外提取处理",
            "必须使用Node.js运行时"
        ],
        desc: "SSR也可使用其他服务端运行时(如Deno)"
    },
    {
        question: "实现微前端资源隔离的方案包括：",
        radios: [
            "CSS命名空间",
            "Shadow DOM",
            "iframe沙箱",
            "全局状态管理"
        ],
        muti: true,
        desc: "全局状态管理不解决资源隔离问题"
    },
    {
        question: "下列哪些属于静态资源优化手段？",
        radios: [
            "图片压缩",
            "字体子集化",
            "雪碧图合并",
            "Base64内联"
        ],
        muti: true,
        desc: "所有选项都是有效的静态资源优化方法"
    },
    {
        question: "关于依赖预构建(Pre-bundling)的目的，错误的是：",
        radios: [
            "减少模块解析开销",
            "转换CJS为ESM格式",
            "提升开发服务器启动速度",
            "优化运行时性能"
        ],
        desc: "主要优化构建性能而非运行时性能"
    },
    {
        question: "实现构建缓存持久化的方案包括：",
        radios: [
            "文件系统缓存",
            "CI缓存目录",
            "Docker层缓存",
            "内存缓存"
        ],
        muti: true,
        desc: "内存缓存无法持久化"
    },
    {
        question: "下列哪些工具可以用于代码质量检查？",
        radios: [
            "ESLint",
            "Prettier",
            "Stylelint",
            "Webpack Bundle Analyzer"
        ],
        muti: true,
        desc: "Bundle Analyzer用于体积分析而非代码质量"
    },
    {
        question: "关于差分构建(Differential Build)的实现，正确的是：",
        radios: [
            "生成现代和传统两套包",
            "基于browserslist配置",
            "需要HTML模板动态适配",
            "必须使用HTTP/2推送"
        ],
        muti: true,
        desc: "HTTP/2推送是可选项而非必须"
    },
    {
        question: "下列哪些属于构建时注入的全局变量？",
        radios: [
            "process.env.NODE_ENV",
            "__VERSION__",
            "import.meta.env",
            "window.location"
        ],
        muti: true,
        desc: "window.location是运行时变量"
    },
    {
        question: "关于构建产物的长期缓存策略，错误的是：",
        radios: [
            "静态资源使用contenthash",
            "入口文件使用hash",
            "禁用HTML文件缓存",
            "第三方库单独打包"
        ],
        desc: "入口文件也应使用contenthash而非全量hash"
    },
    {
        question: "实现零停机部署的关键技术包括：",
        radios: [
            "蓝绿部署",
            "滚动更新",
            "资产指纹策略",
            "服务端渲染"
        ],
        muti: true,
        desc: "服务端渲染不直接影响部署策略"
    }
];

export default questions;